package map;

import java.util.*;

public class MapDemo2 {
    public static void main(String[] args) {
        /** Map的遍历
         * Map提供了三种遍历方式
         * 1，遍历所有的Key
         * 2，遍历每一种键对
         * 3，遍历所有的value(用的相较用的比较少)*
         */
        Map<String,Integer>map = new HashMap<>();
        map.put("语文",99);
        map.put("数学",98);
        map.put("英语",97);
        map.put("物理",96);
        map.put("化学",95);
        System.out.println(map);

         /**
          * 遍历所有的key
          * Set<K> keySet();
          * 将当前的Map中所有的key以一个Set集合形式返回
          *
          *
          * */
         Set<String> keySet= map.keySet();
         for(String key : keySet){
             System.out.println("key:"+key);
         }
         /**
          * 遍历每一组键对
          * Set<Entry>  entrySet()
          *将当前的MAP中所有的键对以若干的Entry实例表示，并将他们以一个Set集合返回
          *
          * */
         Set<Map.Entry<String,Integer>> entrySet =map.entrySet();
         for(Map.Entry<String,Integer> e : entrySet){
             String key = e.getKey();
             Integer value = e.getValue();
             System.out.println(key+":"+value);
         }
         /**
          * 遍历所有的value
          * Collection<V> values();
          * 将当前MAP中所有的value以一个Collection集合返回    以一个集合返回
          *
          * */

        Collection<Integer> values=map.values();
        for(Integer value : values){
            System.out.println("value:"+value);
        }
        /**JDK8之后，集合和map提供了forEach方法，基于lambda表达式遍历
         **/
        values.forEach(value -> System.out.println("value:"+value));
        //values.forEach(System.out::println);
        /**values.forEach((value)->{
        System.out.println(values)})
         */
        map.forEach((k,v)->System.out.println(k+":"+v));
    }
}